# 动物识别系统
# 自定义函数，判断有无重复元素
def judge_repeat(value, list_):
    return value in list_  # 直接使用in操作符判断元素是否在列表中

# 自定义函数，对已经整理好的综合数据库real_list进行最终的结果判断
def judge_last(list_):
    for i in list_:
        if i == '23':
            if '12' in list_ and '21' in list_ and '13' in list_ and '14' in list_:
                print("黄褐色，有斑点,哺乳类，食肉类->金钱豹\n")
                print("所识别的动物为金钱豹")
                return
        elif i == '14':
            if '24' in list_:
                print("有黑色条纹，蹄类->斑马\n")
                print("所识别的动物为斑马")
                return
        elif i == '24':
            if '13' in list_ and '15' in list_ and '16' in list_:
                print("有斑点，有黑色条纹，长脖，蹄类->长颈鹿\n")
                print("所识别的动物为长颈鹿")
                return
        elif i == '20':
            if '22' in list_:
                print("善飞，鸟类->信天翁\n")
                print("所识别的动物为信天翁")
                return
        elif i == '22':
            if '4' in list_ and '15' in list_ and '16' in list_:
                print("不会飞，长脖，长腿，鸟类->鸵鸟\n")
                print("所识别的动物为鸵鸟")
                return
        elif i == '4':
            if '22' in list_ and '18' in list_ and '19' in list_:
                print("不会飞，会游泳，黑白二色，鸟类->企鹅\n")
                print("所识别的动物企鹅")
                return
        else:
            print("\n根据所给条件无法判断为何种动物")

# 字典，将数字映射到动物特征
dict_before = {
    '1': '有毛发', '2': '产奶', '3': '有羽毛', '4': '不会飞', '5': '会下蛋', '6': '吃肉', '7': '有犬齿',
    '8': '有爪', '9': '眼盯前方', '10': '有蹄', '11': '反刍', '12': '黄褐色', '13': '有斑点', '14': '有黑色条纹',
    '15': '长脖', '16': '长腿', '17': '会飞', '18': '会游泳', '19': '黑白二色', '20': '善飞', '21': '哺乳类',
    '22': '鸟类', '23': '食肉类', '24': '蹄类', '25': '金钱豹', '26': '虎', '27': '长颈鹿', '28': '斑马',
    '29': '鸵鸟', '30': '企鹅', '31': '信天翁'
}

# 打印输入提示信息
print('''输入对应条件前面的数字:
                                *******************************************************
                                *1:有毛发  2:产奶  3:有羽毛  4:不会飞  5:会下蛋          *
                                *6:吃肉  7:有犬齿  8:有爪  9:眼盯前方  10:有蹄         *
                                *11:反刍  12:黄褐色  13:有斑点  14:有黑色条纹  15:长脖 *
                                *16:长腿  17:不会飞  18:会游泳  19:黑白二色  20:善飞   *
                                *21：哺乳类  22:鸟类  23:食肉类  24：蹄类              *
                                *******************************************************
                                *******************当输入数字0时!程序结束***************
     ''' )

# 综合数据库
list_real = []
while True:
    # 循环输入前提条件所对应的字典中的键
    num_real = input("请输入：")
    list_real.append(num_real)
    if num_real == '0':
        break

print("\n前提条件为：")
# 输出前提条件
for i in range(len(list_real) - 1):
    print(dict_before[list_real[i]], end=" ")
print("\n")

print("推理过程如下：")
# 遍历综合数据库list_real中的前提条件
for i in list_real:
    if i == '1' and '21' not in list_real:
        list_real.append('21')
        print("有毛发->哺乳类")
    elif i == '2' and '21' not in list_real:
        list_real.append('21')
        print("产奶->哺乳类")
    elif i == '3' and '22' not in list_real:
        list_real.append('22')
        print("有羽毛->鸟类")
    elif i == '4' and '5' in list_real and '22' not in list_real:
        list_real.append('22')
        print("不会飞，会下蛋->鸟类")
    elif i == '6' and '21' in list_real and '23' not in list_real:
        list_real.append('23')
        print("食肉->哺乳类")
    elif i == '7' and i == '8' and i == '9' and '23' not in list_real:
        list_real.append('23')
        print("有犬齿,有爪,眼盯前方->食肉类")
    elif i == '10' and '21' in list_real and '24' not in list_real:
        list_real.append('24')
        print("有蹄，哺乳类->蹄类")
    elif i == '11' and '21' in list_real and '24' not in list_real:
        list_real.append('24')
        print("反刍，哺乳类->哺乳类")
    else:
        continue

judge_last(list_real)
